package com.hmall.api.fallback;

import com.hmall.api.client.TradeClient;
import com.hmall.common.exception.BizIllegalException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
@Slf4j
public class TradeClientFallback implements FallbackFactory<TradeClient> {
    @Override
    public TradeClient create(Throwable cause) {
        //创建tradeclient接口实现类, 其中的方法, 编写失败降级的处理逻辑
        return new TradeClient() {
            @Override
            public void markOrderPaySuccess(Long orderId) {
                //涉及到分布式事务, 需要抛出异常, 只有显示错误,才会回滚
                // 存在pay 调用 trade 与pay 调用user, 存在分布式事务
                log.error("调用订单服务失败, 订单id为: {}", orderId, cause);
                throw new BizIllegalException("调用订单支付服务失败!");
            }
        };
    }
}
